{
 "metadata": {
  "name": "",
  "signature": "sha256:47cce93a45cfa5f8fe180e6786df1427740e977e183ab707eb688ee1614ff324"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import matplotlib.pyplot as plt\n",
      "import random\n",
      "import numpy as np\n",
      "from sklearn.metrics import classification_report\n",
      "from sklearn import preprocessing\n",
      "from sklearn.preprocessing import PolynomialFeatures\n",
      "%matplotlib inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "rd = np.random.rand(200)\n",
      "x1 = np.linspace(-1, 1, 200)\n",
      "y1 = np.sqrt(1 - x1**2) + rd\n",
      "\n",
      "rd = np.random.rand(200)\n",
      "x2 = np.linspace(-2, 2, 200)\n",
      "y2 = np.sqrt(4 - x2**2) + rd\n",
      "\n",
      "def plot(x1, y1, x2, y2):\n",
      "    scatter0 = plt.scatter(x1, y1, c='b', marker='o')\n",
      "    scatter1 = plt.scatter(x2, y2, c='r', marker='x')\n",
      "    plt.legend(handles=[scatter0, scatter1], labels=['label0','label1'],loc='best')\n",
      "    \n",
      "plot(x1, y1, x2, y2)\n",
      "plt.show() \n",
      "\n",
      "x = np.hstack((x1,x2))\n",
      "y = np.hstack((y1,y2))\n",
      "x_data = np.vstack((x, y)).T\n",
      "print (x_data.shape)\n",
      "x_label = [0]*len(x1) + [1]*len(x2)\n",
      "print (len(x_label))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nw/Qh/x/AOJq395M58QAAAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f78b95bd470>"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(400, 2)\n",
        "400\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "test = [[2,3]]\n",
      "poly_reg = PolynomialFeatures(degree=3)\n",
      "x_poly = poly_reg.fit_transform(test)\n",
      "x_poly"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 3,
       "text": [
        "array([[  1.,   2.,   3.,   4.,   6.,   9.,   8.,  12.,  18.,  27.]])"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "poly_reg = PolynomialFeatures(degree=3)\n",
      "x_poly = poly_reg.fit_transform(x_data)\n",
      "x_poly.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "(400, 10)"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def sigmoid(x):\n",
      "    return 1.0/(1.0+np.exp(-x))\n",
      "\n",
      "def cost(xMat, yMat, w):\n",
      "    left = np.multiply(yMat, np.log(sigmoid(xMat*w)))\n",
      "    right = np.multiply(1-yMat, np.log(1-sigmoid(xMat*w)))\n",
      "    return np.sum(left+right)/(-len(xMat))\n",
      "\n",
      "def train(xdata, ylabel, lr = 0.005, epoches = 50000):\n",
      "    xMat = np.mat(xdata)\n",
      "    yMat = np.mat(ylabel).T\n",
      "    \n",
      "    costList = []\n",
      "    m,n = np.shape(xMat)\n",
      "    w = np.mat(np.ones((n,1)))\n",
      "    #b = np.mat(1.0)\n",
      "    for i in range(epoches):\n",
      "        a = sigmoid(xMat*w)\n",
      "        w_grad = np.dot(xMat.T, (a-yMat))/m\n",
      "        w -= np.dot(lr,w_grad)\n",
      "        #b_grad = np.sum((a-yMat))/m\n",
      "        #b -= lr*b_grad\n",
      "        if i % 250 == 0:\n",
      "            costList.append(cost(xMat, yMat, w))\n",
      "    return w, costList\n",
      "    \n",
      "    \n",
      "    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "w, costList = train(x_poly, x_label)\n",
      "print (w)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[[-3.83546316]\n",
        " [ 0.2169426 ]\n",
        " [-3.53782528]\n",
        " [ 1.31222988]\n",
        " [ 0.13701306]\n",
        " [-2.25091755]\n",
        " [ 0.04034158]\n",
        " [ 2.41705821]\n",
        " [-0.10745187]\n",
        " [ 2.43028172]]\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stderr",
       "text": [
        "-c:6: RuntimeWarning: divide by zero encountered in log\n",
        "-c:6: RuntimeWarning: invalid value encountered in multiply\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = np.linspace(0,10000,200)\n",
      "print (x.shape)\n",
      "print (len(costList))\n",
      "plt.plot(x, costList, c='r')\n",
      "plt.title(\"Train\")\n",
      "plt.xlabel('Epochs')\n",
      "plt.ylabel('Cost')\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(200,)\n",
        "200\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f78b95c1438>"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x_min, x_max = x_data[:,0].min()-1, x_data[:,0].max()+1\n",
      "y_min, y_max = x_data[:,1].max()-1, x_data[:,1].max()+1\n",
      "\n",
      "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
      "                     np.arange(x_min, x_max, 0.02))\n",
      "\n",
      "z = sigmoid(poly_reg.fit_transform(np.c_[xx.ravel(), yy.ravel()]).dot(np.array(w)))\n",
      "for i in range(len(z)):\n",
      "    if z[i] > 0.5:\n",
      "        z[i] = 1\n",
      "    else:\n",
      "        z[i] = 0\n",
      "print(z.shape, xx.shape)\n",
      "z = z.reshape(xx.shape)\n",
      "cs = plt.contourf(xx, yy, z)\n",
      "plot(x1,y1,x2,y2)\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(90000, 1) (300, 300)\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJztnX18HNV5739Hq5VlrfVmLMusIJgG\nmyAc22ACxGkaehOnJIYEhySEEjuWb+uWhF6/pCROiN9pPy0EvyQhNLTYXAyF9IMDuWDaxGlDQppA\ngo1lbBlsN8axLZBlrNXKu5a02j33j5kze2bmzOzs7qxWGj3fz4eP2dXszJl9eeaZ5+X3MM45CIIg\niOBQUe4FEARBEP5Chp0gCCJgkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJgkGEnCIIIGGTYCYIg\nAgYZdoIgiIBRWY6DTpo0iU+dOrUchyYIghi17Nmz5wznvCnXdmUx7FOnTsWrr75ajkMTBEGMWhhj\nx71sR6EYgiCIgEGGnSAIImCQYScIgggYZYmxEwRBqEilUjh58iT6+/vLvZSyUl1djYsuugjhcLig\n15NhJwhixHDy5EnU1tZi6tSpYIyVezllgXOOd999FydPnsSll15a0D4oFEMQxIihv78fF1xwwZg1\n6gDAGMMFF1xQ1F1L0YadMVbNGPstY6ydMXaQMba+2H0SBDF2GctGXVDse+BHKGYAwP/inJ9jjIUB\n/Iox9u+c85d92DdBjGw4B+QfofUxQZSBoj12rnFOfxjW/6NBqkR5sM7wLeVM33XrgBUrssfgXHu8\nbl3pjkmUnAkTJrj+/a233sKMGTPy2ufixYvx9NNPAwCOHTuG6667Dpdddhluu+02DA4OFrxWJ3yJ\nsTPGQoyxfQBOA9jNOX/Fj/0ShIEXg201tJmM2dD6aeQ5B2IxYOvW7DFXrNAex2KlvaAQo5qvf/3r\nWLFiBY4ePYrGxkY88sgjvh/Dl6oYznkawGzGWAOAZxhjMzjnB+RtGGNLASwFgAtbQmj/w8V+HJoI\nEnIYQzKMzVviCPVm0Lm2wdgmuqEX6TqGruV12ms4R/REL5q2nUN33yNI1zLU7e5HTUcK3UsmoPOt\nf0Z0Y1x7zYr6/NaiegwAKziifRPQtHWrZtAB7VgrngZO7Czu/J2OGXSGtiE5kPK8+Q+fasDaNVNw\n8kQYF12cwvoN7+C2L8SKXEQGyYH9OHcuic9/dhlisThSqSGsXXcXbrr5T3F+4BRSqQRu+8J8tO87\nhCta34t/fuRe1NSMx2t7O7Dqa9/GuUQSF1zQgB/880ZceGEThtI9GEgdR6K/Hf/1X7vxL9tXITmw\nH7fd/iH83b0P4UtLPmRbxeBQF9r/8PGCzsDXqhjOeQzAzwHcqPjbw5zzazjn1zROpGIcwkzz5l5E\nN/QCnGv/vz6Gy245jcs+3YVQbwZN2xO44rq3MW2+9lzTtnMI9WYQXdeD5s29AGPoXFOP7rYImrad\nw5StfajpSCHZGkbn6jpEN8a118R5Tm9aXgsAIJNBdEOvdhwg+7x+TJnONfUFGWPbMTk3H5Ow8cOn\nGvCVL1+EE3+oAucMJ/5Qha98+SL88KkGX/ZfXV2Fp/5tM3798g/x7z/5F3zj6w+A65/P4cNvYelf\nfR57259FbW0ED//g35BKpfDVlf+Ax5/8Nv77N09h0Zduwfq13zXt8913Y6ivr0VlpeZTt7Q0o7Pz\ntC/rlSnaY2eMNQFIcc5jjLHxAOYB+MeiV0YEE5VXCiAU52jads543LQ9YWzCBrXnqroyqOrKAAC6\nF9eg5rVBRPal0N0WcTTWNR0pzLq0U3vNkgm5DS/n2bUANs8fmUzW819epxljieiGXnSurgMq8nBe\nLMfsXFOP6Ab97mPJhLHpuXtg7ZopOJ80v8/nkxVYu2aKD167Vk++bs138Ktf7UVFRQU6O0+jq+td\nAMBFF03BB+deBQD4wu3z8dD3n8S8j89Fx8GjuHn+XwMA0uk0pkyZVPQ6CsGPUMyFAP4vYywE7Q7g\n3zjnz/uwXyJgNG/uRSjOs8ZV90rTdVnPVxg3mZpDadtzTY8mbc9F18dMFwQrnrxppl6L1fPvbosY\nx0u2hnFkV5Pxt8jLA4jPq0bXSg8hH8UxxXE9XYhUSHcUyscB4eQJdVem0/P58tSTL+DMmR7892+e\nRDgcxhXTP4GB/gEA9nJE/euMK1rfi5//YofjPi+4oAG9vX0YGhpCZWUlTp3qQjQ62Zf1yvhRFbOf\nc34V53wm53wG53yDHwsjAobklYqQg/BKQ3HN8FjDGl7obougaXsCs6aeMox6d1sE7ceiSLaaf+Cm\nUIcbihCL8PyFF925tgHpOoZkaxg1HSlEN8bR+a1a43Goj2vJW6/4FNZp3tyLy245jej6mHZ8zo2w\nVvOm4r3YkcRFF6tj8U7P50s8fg5NTRMRDofxixd/iz/8odP424kTb+OVl9sBAP/2w3/HB+dehenT\np+JMd4/xfCqVQkfHUdM+GWP4k498AM/8aDcA4InH/x9uuvlPfVmvDAW7ieFBxMCXTEDTtnOaIRZG\nUjdo1rCGimSr5SbTYqi72yJaKGNj3Iixv7NsgnHc6IZeu8FVVNy4rUUY3K6VDTiyqyl7Tn/0djZZ\nq3v3zQ/0uB/L5ZieL0TSPkK9GUT2pdC0PYFp808juq4HTdsTiOxLoW53P5o3BSdmv37DOxhfY/4s\nx9dksH7DO77s/7YvfBJ793bgA3Nuxb8+8Rwuvzzb3j99+lT84J+ewtWzbkEsFsdfLv08qqrCePzJ\nb2P1PVtw3Qc+hw9e+3m88pt223433rsc3/3ODry/9SacPduLLy1e4Mt6ZRjP54vjE1fOrOL/+nzz\nsB+XKAH5VnJwjllTTxkP299qAYBsTLktAsAcY09NYgif4Ug1MoR7OJKtlUhcW6XF2NuHTLvvboug\nc22DVkkT59l4t244xx8cxPkrq5ThoK4V9aY7CWGgp83vRk1H1gu0hUgyGSOODwDtv78Q0Xv70LTt\nHFITK/DuF2vQ9dUG+7Gk90Q+/861DebHa+rNMXu395hzzZhbQlXJ1krUdAwVHt4ZLnq3Ydp077ah\nNFUxI4Mjh7uA+iWm52ZfcnIP5/yaXK8lj50omLwrOZy8UmhJSiPEUV+B7rYIErPDSMwOo+N3F6K7\nLYKB6ZVItoYRn1eNzrUNSF49DgCQmB1G+1stmue8PYHohl50La8zG0TG0Lm6DuevrHIOB+kGM13H\nTF63o+fPtddEN8ZN5zTrj942jHr4bAZ1PxswKmuUlTn6MROzs6EjUeFT/8J5XLag2/t7zBg61zXa\nnh4VRr0AbvtCDG8cfgPnzr+ONw6/ERijXiyk7kgURr6VHJIRTcwOI3lVFQCYKmHSdUwLceieswFj\nWg07Y1oYRTfW4gIg/iZCOmI/NioqPCUpjeNbjLzw/I1j6Ebd8Ky/VYtZ782GAcJnM0bMPVdlTtfy\nOqOs0zgXzo1KoOj6mNmTd3iPAS2JrKJzdV2gjDrhDIViiMKRjLXAzSts3tyLUK8WE23anjDCLkbZ\nYiEeZa5QkHgs/wvYw0FyBYn1+Ip9Nm+OI9THka5lqP1FP5KzKhH5XQo1HebQUPvvL8SsP3pbfSyx\nbyAbFrJU9qhCU3JeQuzLeG85N8IwqYkM4bPZ33eytRJHdk3OXqDc3iency81eYZigkwxoRjy2InC\n0T1L2bC7GWaTJ86Y8wUhH2Ni3U56LMor07UMoT4t3h7d0Iua18zaHMIbBmCLt4Mxm9Fv3tyLut0D\nWqK0LYLkrEo0/d/zAOzGtPUacyIvuqHXOM/mzb2ofbEfyauqjONbk6Wi21Y27HKyWdTTh+LaNonZ\nYSRmVaLqRBrhs3o+4gNhNOwaQE3HkFaDL94P8X7rtflG/sGSl/DcrUuMGMiwExqFeGqqmLkwkk4e\nsP7/tgvCakkawA9jIoWKRDgk8pt+1BzKetQioSgbzabtCXQvmYDmTb1m4yfWVQuE+mDE3a1188Ko\nd39pPBqe69eNq7nOXZyvqGCJ7EsZa7YmPaPrehB5ZcD8nB5qEWsV7ydgr70/sqtJj7tz3agDoT51\nA1ayNSzV4Y8zLhZG2AegUM4ogQw74do45GhcrdUja+px2S2nDUOn9IAtr5WZNr/bZPyK7rhUNBrJ\nRt0oi9zQi6btiWwNvJQ0dcofdK6uM+1XRef6iUg3aJ59fN44U3w/Xce0x/p7JB9fkJgdBhvIGIY+\n+b4QwBhqDg2Z6vXlOyTrxfLIriZz8li+I4LiIvD8JEy76QxqOlJGFZBxDDh8lsSIhKpixjrWxiFr\n9YZTk42cWNR/+CIhKkIdyioQywVBNBLZGoD8qN5QNP0IOtc2mIyr8bxeSeNac19RYRh3J6IbetG1\noh5HdjWha2WDaT2GYRRJYQvdi2sQ2ZcyOm5TkxgS148zXZiMc5DujGx3TxvjtiS00/tS05Ey6vCd\nzser1s5oZ/IF17v+/fhbp3DN1Z/Ja59L/2K10ZT0Tw89ife33oRI9SycOdOT45WFQYZ9rGNtHBLG\nVa/yiG6Ma6V1ehejAefoWlGfNcC6kepuiyCyL2U3hpJRMV0QKio0z1LCi56LCaeGI5dGI/kiZnte\nv1Nw7ATNZDBtfrdyv91tEUOILLqh1zUHIJKluQif0UI0jp201oulKP2UyzJlcjRgyRhdvX5ecP1E\ncW4jnes/OBvPv/ADvOc90ZIdgwx70PHyxddrvGVqXhvEtJu60bTtHGpf7Me0T2qqis2bs/XfQlXR\ntB+VB2wt7ZMvCIo6cLeOS2vtfPOmXkyb351tlxdr2xQzjJ3oVhWGMdlaiaZt5zBtfrdxETMZQ70d\nX2n09USjiEm3H4sa9efJKyqRrtPuArqXTEC6FuoKGLFOqQJGXBAAtQ4OAKOr1Wa4AfPFUrpY20o/\nHe6YZJJXVKL9WNRYj2CkGfXwxocQvvt+04U8fPf9CG98yJf9nzuXxCdv/EvMvf42fGDOrXj+uZ8b\nf0sPpdH2pW/g6lm34I7bv4pkUkuev7a3A3/2sSX40Ae/gE/d9Nd4+227AzB79hW4ZGqLL2t0ggx7\nEBFGTxhB4dFam1tkz9ZiXCP7tNK95BUhsAGOmkNDiLQPIRRLawZJdVvu5gFbkWL5+XiaRthIN74i\n8Ve3u98cRurTEoOJ2WHwKobutojW/t8WAQ9rMexMrbopqGbvAC5b0K1el15V0r1kghHDPvrsZHS3\nRRD/uC78xZheeQLb3YPx3jOGdH0FErPDRi1+55p64yKUmFVpM6zJ1kojyWw13KaLpb5/U9hHet9N\nDVgbeo2L1LnrwkhN0uL40XX2EIHtMymnt8w50NuH8PeeMIx7+O77Ef7eE0Bvny9rKYVs73BBydOA\nYSRCV9cZRtCocuiDYayMqg8pUZhsDSP+sSpM+U42kWdVVhTepPW2vHlTLFsCKLXiywlIVVhC5WkC\nDk1G+t9r9g6YEo6iusXWBAQgFNeafpJXVRn7i7QPoXtxTbbhx5LwjbQPZQ2uYl2mUkixLku8W648\ncWre6lpepw0K0fcBxhCfNx6Ja9NaOaii1j+6MW5ek6LiyPGxjlh/85Y4al4bNCVIp33yNMJnhjDx\nh+cR6s++t6mJFabzMSQb8km4+wljSN1/NwBoxv17TwAAUnfdoT3vw53FWJftJUYK1m7Q1XWIvDxg\nrnJQVH2ka7MqhV4xGRXOTSWA1lb8dK09HGDq8sxk7Ik9lx9m8qqqbIkgoOnGSI1BsrERBrdp2znD\ngCdmh02VJADslTGWBiDbutyMqKUiR7zP4r1xM4RdK7NG17QOZKtSHNeQJ6E4R2RfyrjoRTf0oubQ\nkKkWv6ZjyPhuGJ8lMDL043XjLow6AN+MOlAa2d7hggx7kHAwKDImb49z0zbiBywGVzjFegFzo431\nuCbP2TJ0QllaaR1Zl+cP01b7rQ+7EPu1lgEmr6rSFA9fGTDExFTvkY181qVo3jLkfXMZQqa4K3Bb\nV75YksPyRa97yQRNGkHqlpXvwsRn6at+fBHnEb77ftNT4bvv9824e5Htve76WUrZ3uuun4VUKoUj\nR46jtfWyoteSLxRjDxouJX6A3tziEH+Mz6u2GfXk+yqQmpT9kXR/aby56kNqXFFWkVhUCV012XPF\nRcX2UohCkJqorVE02YgwUKg3Y6s8ifymP9uc9GjSphAZXdfjHkv2gqLyRKzNc5WJx9BKPpiSz4qk\neefqOkTv7bO9zjYVyq1qaDiQYuqpu+5A8vw+pO66wxRzL5ZSyfZ+/8EnMO2983DqVBeu+8Dn8OW/\nXlf0Wq2QVkzQUOi3JN8XQuKD1VmvbHENALunK7yy5q19qH2xX3vtVVVI12ndibxSMwZ9N1RryUnr\nMGkvujF56stYserNCBIzQ0jOqXbUWXGS4DWdf1vENG7P1GRVi2w9un4ejuuVztEkeGZpQrLpxuRL\nvt3C1qYyxfsh7tqEMqX8vNHwpNuMYj5HR/LQiglvfAjo7ct66MKDr69FavWdha9hhECyvYSG5Yf7\nzrJapCZVoOaNNMC5qZzOSIJaS/02xtG1vA5Hn2kyQhahPuDI89qPOtI+ZCRnxcxPubQwZ3VLkZ6e\nSDYKY93+VovW0LPfPj7PkAB2qZk3bf+tWnOTlShJ3HYOdbsHsrX81goXKyIp3BYx3kNwbhsSYkw5\n8oLlDqJ5k+R5e1mTvq7O1XWmngVhxIGsUU+PyypTtv/+QtOUqOZN2qBx8b6IMs3E7LBzNVOJSK2+\n0xx20WPuQTDqxUIx9iCh6AYVVSE1+1I4+kyTzaN1lLyVKj2U8Xo92SZ+3Om6CtNxHatbVB2Scrze\nyznKxprp+uOM2cW9xH5dji3T+oHT6PidNn+yaXvCyBVoYZuU8VpZjdLJS7ZKD5ve98U1RtVL5JXB\nnPNR5bxE85Y4QrE0Ir8d1BLG+jFq9g5o1T4uui5yxZT8eb57RzVCiWzVS2jA7KELqQdDZ0YXGzPd\nES2uMe7uhrXWvQThqiBAhj1gWJNush6JPOXHhkP5nDUBKGaMmipMAHStyMZqTQOqXZpj5CQi4N1z\nVyUWARjGVghbydVBQtUxsi+FxKxKsBSMSpqsYFcG025+F0een2QO81xbhcR14+wXxVz65tJnYArD\n6O9r5JVB1HSkkLh+nHMYRa50EhovIv/RWmm7YDjqunBu6L1HXjaLitX9Z0o7ZyedGaFzo4c7avYO\nmMTLhIHPq9TRMYzEwTm3VZ2MNbQQeeF3PhSKCQJut76K0Ef7sahp2pCTh+el9VyEGpwGVJvWJ4Uo\ncnZI5sJyATK8+NV1CPVxqTxP00yROzyP/rgZ8XnjjTBCurESHa9OyWrWSBUhgB66ssTHO9fUZ+UW\n3FC8h+Iia6o2cUmgGpIPFrEwq/a7NdchJ6Sbt8SNcJAcU09NqkBNRwrTbjpj2pVJZ8ZihEW4ynpO\noT54Ci25Tt4KHUcslkI5cn8jBc45YrEUEDpe8D7IYx+t8Kw2uGq2p2mGp7Vlf2PcqIZI16m9RAB2\n79oyBEJsK6pkVGVvpvJGaDHy6PoYmrfEjcSryrNXPrY+L01TMurhLVOSTPX7Um26qBcXjwHgyPOT\nzEMxjkVNDUwyIunoOMnIYmRlBUy5Bt8oy7QmZ2UUd04qlLX4+jpCca3SSe60BYDY/HH6gJBswli+\ni7Jpt3Nu8/hFlZJcYuqmCupWA8/Hb8GZs8txpvsSAGPVa+dA6Dh4zdaC3wEy7KMQT92lbRFD18QQ\n9dK9TDlE0by1zxzjli4M1ni9IDGrEsmrtdBE06NJo8pGIDfhiPXV7B0wVYd0t0UQXR9Dur7CZASc\nJIStQ6ibN/Wibnc/4vPGaQbRUg9v03t36Hw14NxW5ueWCJSbseT9WNcvmr/Stdox2KB5f+ICoem1\n9Kpj7TnunMSQbxnTuuS+BetFijHE51UjcV3WszfyIxbtdqOK5tAQku8LaUl5yxpN+u2qizHca+AZ\niwMTNjie61iimMsaGfbRhofuUsMrk0IfANC8tc+W1HTznqzdl+m6ClMZIADDuMsYdwTCe9YNijUm\nqzICTusRNeDinIVGDAB0Lc+Yddz1C5ppTW4JWkUZoOypGyWLlqYtobPu+NmsqTfCQonrqnRdFmtn\np1aVYou1q7x+xZg8ADajbnwGHnIWTY8mTb0LpsEdYh2wdNBeUanJCL+RMO0HcLlbszgNni68RMFQ\njH20IcdcpZI1GTnuLZcHirh35+o6zUsW+9JDKcrGGf3H1rzZMlEIsHmzRuxebxASUgFWj1+EDFTj\n8EznJq3nyK4m2zkrddyFUZZLL1UNVZb3VAh7ibLIzjX12pi52WEcfXay0vDYYsou65dLLztenWLa\njygttMoNCPVM485J7KMtYrtLUn0G1vO1Vg2J8kvjzkvxuas+v8T147LlpsfM0rPGOWQyzs1oiqax\n4SyTHAsUbdgZYxczxn7OGOtgjB1kjC3zY2GECzm6S2v2DpiNtWREm7fE7QMYLFi9NVPHqP7a6PqY\n2lP/Vq2p7tlNu1z27OQftq0bUhhby/MqHffmrX02YStA87qdErTGRUs2rBvj6PvIOBx9drJxbk3b\nE0i2VtouYM2bpDCJS51+14p6x85O4/1SJD9l5UabiqMFcbdkSkjr+xSNV6LPwJp8Ve5XEQYy3l89\npm49vrhjStfCfpGz3K3lVPQkCsIPj30IwFc5560ArgfwFcZYqw/7JZzg9gENydZKw4uLtA/ZfiDZ\nunaLF6VIiMpDKITXaPNEpSoTk5d4bx+OPD/J3gTTyGxe5mWf7jJ5dpfdchrRdT2YNv+0ebtbTgPp\ntO0CYX0cXR8z5ojK5yLUHQ0lRYkXnvkUnvvnz6Np2zn8dsYn8MIznzJJ/wLQPXrRwDNkGE9xAQv1\n2SdEqd5PccHQQkvmKKhQT3QbUGLs37jICH357L/i4mvclYn1S16/aFRyHNwhsISoxOcc2Zcy/c16\nfEPOoU9xkbY2jRVTGUU44rukAGPsxwC+xznf7bQNSQrkwK1V3BJzFbXZAmE8a+QhyYApNm5tBQey\n8qyykp9Rjid58LOmnlLuU+xXrsaRt5XXF3ll0BjzZsjnWu4A5Di0/Ng6m9M6KFoVh3ZqdX/h2U9j\nw6r70H9+PDZjBZZjq/G3rfg/+Mfo3+Jvvv6P+OQtP9aelJLRyn271OmLdTZviev5AU0a+OgzTUqZ\ng/ZjUVv83hQWi/NsxYpUWWNIPaiqUlyqdWy5FQ/Hqv2FVh1z9Jkm9ftiURE1vV+AeyUUocSrpICv\nyVPG2FQAVwF4xc/9BhrLF9rQSVcknERc3BQPBkwGVJSriWYdUWIna45bOw9VFTMqo66szJCqUYxt\nFcnL1KQKhM9kTM01NR1DqNmXMsd0dWSjLh7L3ZDxedUAoBwU3bW8zmTYrUb9pq2b0LVjHlLd9RC1\nByuw2WTYl2ML0Mlwz9c24fvHP4LGG17X/vBpjv3b7lXvmzG80XkFno3MxF9t+wGm/ORt/M3f/j2W\ntf6LSdlRGEQhlytfqARiuLethHV5nblBSy7xdKhCMZDW6VUHX5SRWqupohvjRmhHVY4pG3XHZjTV\n2ghf8M2wM8YmANgJYDnnPK74+1IASwHgwpaQX4cd1diqBqSJQIBa57p5SzwbDwbsSaiNcVt7v9Av\nF/ontpi3SFxaDL7VUAvPU3jKoiXekPqFeeCGSVDqjLlx5cjzTUZIQeXZq5C7IbtW1qNreW3Wq5WM\nU/ucqzEL2X3+fOqtWDVuPS4f/2P0DFyKk+c/DHMxGcdmrDAdazNWYAU2gw9U4czWj2LGD18COMdf\n9b5kXtOfTMX33ncTwBgOTp6Bc7/4U/SfHw+A4e1TF2HDN78N/D3wF6/vMJf3yXdQ9/bZBpTUdKQM\n4y7e+8TsMEK9mexQD0uJp3gfvKAcFuIUu7f0Btj6FQBl+MmzzITA7U6VyAtfDDtjLAzNqD/BOf+R\nahvO+cMAHga0UIwfxx3VqEr7pOEUTj8gW3u5FOsGshOS5DpmlayAKFmTyxUjv7VrrYhbcOMu4Vu1\nJu+ypiOVLa/k2YEbqYkViH80bGxjJXqvVnrppKGi4rczPoG/SvwAU1reRui236Dxhtcx8cEIxh84\nZRz/jjNvYtHgc9iCZViBzdkQywDDioH7oX3l7UZ9ObbaXwPNk+9PNxpG/ZZEO76DL2MZvqtt94fv\noP+dGjwx6XKc6/pL9KfNeYT+8zX41pr7sXbc32EQE43n5YlLVu/5yK5seMbQtpdDTLoRLnq4hVtd\nv2JbZYki7I1s4g5RTmA7ykzoWBvZ5NcYCqKEZ4o27EwTdXgEwCHO+abilzRGYFktbJsRX11n0nWR\nfwzyawSmWLd+m23TzrbolRx5YbKxT9m4W2PWpli7NBlJxlAw1M9J1NVP+a59UEf7saixb2sHoxC2\n6l5ckxW5AvC7P3k/fv3Lj2BZ4ntIYAJWnNoMbPosTm76LKpDPZhe+xyikT0AY3grdRW2oBUrsBkA\n0/8FYmgAEIYdhhgaDKNufw1DdegswBjeHpqKLfgTrMBWfbstABh6B+vQmXyvdgFQkOkbjwf67jG/\nD3OuxgN/fgMe+9vNdu9ZF94yfQekz9epy7ekOCSFO9fUm2aoAtId4t4BgJnF4pz2nW8jG+FO0clT\nxtgfA3gJwOsAxP32NznnLzi9hpKn5u5R+Qf8zt/UmJT2gOyP15gzaX3NsgnZdnSV5yYly6z7BMwx\neiNpJ+K6ekJOfq11jJ5T44wKq9dvlStItoax5vFPY8Zne9DQdQbgHAfO34jV/B+wGSsQQwPWY51p\nnxVsEDPqn0Q0sgf/cUrEyc1eOXL28XH9VWlwVBqvkff94jvrdONt33d16Cz60/UArGFG5zuCZyOz\n8IP6DwOM4c2vXYLPfOS3WNj46/w+L6umu4vsgvLvXvCQbG3eHM/mhgCbdIIhFOZkoBUVWjY9fWpi\nGr7kKef8V8j9qyFkJA/FprvxcNKQTZXDMnLoxabOt3sAXcv1H7CLUbclsRQXdeWwZG4eoWcyyLm8\nMcCoZIne22fsJz5vHBLXjzOO8bEJG3D37GfR19GIBz/wA/SnG1FdcRbTa5/D/uSXkPWk7V+1DK/C\n4b6bEY3sQXWoB/3piZYtvHzgKweSAAAgAElEQVQ9NeM8vfY5HO67WTu+/jga2QMACqOe3beTt+58\nR8AxqeJl4/O6/L7jOHhfM1bxW3DH5HbM2veSt89L6qi15myUsguFDJzOlWyFXXrAKp0AKDqNLcew\n3lUqdW8IT5CkQDmwhCwE8tQaa/gjXcfQtazWSFYK5GYgJz0U5Y8ykzHpiltL09yqYeQuSSEZYO9q\nDCM+b5yRSI3e22cSHvv24k/gp8eno+VD2r6jeAv3n1uCA6k/R4Zrt+L9mQtwIP7nCLMEUnwC3Ay0\nMKxNVQdwwpYczU0FGzSMuDDkVtQXjSzZdZrR7jDkuwaGb1SswQ1169GZmCNdSLSwEv7nt3i8ah7+\n8tEn0b9tImqndOOxD34O8177janayVRlIukGicdGIp5zs+yCLiGQj6HMlWxVJVdlTDF3h8Spkx6O\nTf2Skqo5IcNeLvSSPdlId7zabFIXtHnOgO01xhAEVaWB/gOwDn1o3hIHGEPfR6qRvHqcqTZZ1bGo\n8vaNC4mOVQtdaJ8ITz1dx7Dw9f8NFmkAHr0Ah7+rGbMjUoz88LlPGUZdkOFVqGCDqGCDtr/JVId6\n0JmYg1P91yP/G8i0EW4BYDK2WnSxQvrXKazDwAGXdZrDN9PrnkdnYg4O9N6evZClJ+JA7+34ZvWl\nODV4HTIYBwDoe2cybn3np9g6eTEaZp/C+9f83u41O1SupCZVoObQkC0J27wlnn/M2i3Zqkiudi+u\nUQ9EV1S/uOnhTJt/Gkd2TVarlxJKSCtmOLF09YXi5hJAmya2NHTYeE2f+RbX1GUoG2+r5rW+v+ZN\nMc2z254wNZzInYLKjkWnLkFmnmjUtbLe0HVJ1zEgFELnmnp84dA9aLkzBuy4AAd6b9c9X2YYs87E\nHMdwxhCPYEb9k1oSE6oBBBzpTBUO9d7qavydqcDhvpvRmZhjGFuxPi1mLv/LFMdXr7OSnQODRTMd\nHBPDb+Bw383YH1ukvJCdOP8hw6gbz2Mc7n73QTxxehZWfegzWPDscuPzkD8va3147ObxtnUaukF+\nNicqPG5rlZUxbtA6wo+ZxeqEd9+9uEbXix8ytIfyGn4+hqFh1sOEtZxLJIqs3Ye2TkpLrbB4TvaM\nbSGb5XXuyS63jsBC64sV2yza9FVEdx4zbaYlIO3hDM0YQvm3SnYOlRWDRriiqeoA3u6/GkM8gvyT\npG6I30Jh+6gOncUNU9ahMzEHr8duA7cYZ7H2U/3X57gAOZ0Hx40tdimmUw81YMes7cqka/KKSqPL\nVyCPRPQFhTrmtPmndSXLCl3kzNzZrPy+iT4NuexR77swJevHcMy9LJ2nhAOKmnURkxbdh26dlLZ6\nZ6ns0DQlSNQ0w13z2rEmOVfHotNj6bmF7W2aZw4giqxRN4c37PSnG3Hx+JcU8fEhpHk1htIT9O0m\n4sT5DyPEBmA3fsX+0PN5vdn4ihh9Z2IO9se+CFV1TFPVAXQPzijwrgIAMuhMzAEAc1x+0XNYVXML\nHrvxUYtx1Z0FhXHPG7eLu3xnp8s1x+eNB9CP+EfDpiovR6Ou70cVy7eVfo5Ro54P5LEPF6oSNqvn\nJJemic9FCsOYWsbdSuKk1yhL47y8tgBWzV1ge64zMQcdvbcqvGszlewcMqiyGD2OEBtAmlcrXuHs\n1Xoz0MV599a7CJEncLoj0UhDi366HTfXuob0YFDWJxMlmXenv48JmQGsXbIIj/3tZq0q5qfnwccx\nU+mhkCL29FmrvGgoZqpCIYeRTmv5lVpgytbsd03+HgJwvmBw8yQvAXns5LGPHFResvV2WDfqti48\nVcIol9ft1FDiRcMjjx/MsqV3ZTs/LViTg05UsEEwQLEdQ5qPU70ETsaPYQDjQkmH0kSZDOxetTcq\n2CBa63cqq2ecyx4BoCJHZY2Xi02lLcIvyj2fmLJH+9x/9BZW/WgBTn2/Hv8Z32yqAxchQNfBIzrN\nm3sR6tXyQE3bE4ahlaupZEfDVPK4pt4ob1WpSHaursNlCzRpC+MiI+R+RQmldGwRf695bbDg7+pY\ngpKnw4WTnKv1jknWPlcMKDDJwzoNK7DKrcqa1xvjZhExVULUAwvb27Bq7gJXo74/9sWcseTq0FnM\nqH8SKe5cB58fYa1k0IUKNoiLx/83Ktig63aaoU2b/hXrVRl1LUziNsw5o6/N/7tk44IifX4tX+7F\nT56+0vxZr23w9lmL76EkWSEGpAjxL6sAmk3a2aItBGTliVuveRsRXYH0sltOG7r94nse6s2gaXvC\n0H4HYMgvd7dFSOI3BxSKGQ7ykEm1bi8Q49kM4Sg5+frsZFO5WOfaBlOXqtOQ60Jrg1UhF5mDZz/r\nsZacG2EMLWasTpzmCuNYcUvEAmnMbHgc0cgel3i4traZDY851rRbyX13olXDXDv5IeX7o5VJVqJw\nX0sL85gkFoxDc3R+9o/w2Fc3GY+9hmFUEs+AouNVeo0c/ntnWa0WnrFoDDlhKHhKUgQCR8nfMYTX\nUAx57MOBNbkke8m1UCaRrGVr8rg7AObkK7Tb0sTssPG8Ma1nY9w0LMNRBdDDD2XRAytzGvXOxJw8\nGoSy5Y5NVQdsHrQIeVw8/iXk4+X2pxsxvfY55f6EUQeg/+v8E+gZuNTzMXOXWjKcTb0P/9n592gc\ndwwzGx4zyiLFXcDF43+F3OfJlSWUohxTLh/NHpohuvMYVs1dgB09c70bRcX3UOB0t2m9KzWUSEMh\n28QrFYaCp+LYhgM0Ro16PpBhHya6VtQjXcuyY+n07tNQH8w1vYBjF5487s64HZbi9EJ8yQjhiPp0\nUfNb4A9ChF2spYsqDvfdjHyTkhlehe7BGaYacDnkceXEpzGz4TFUsnPwZuC1cIh1fy3VL+Nw3834\nj1Nb8eI7WllimDnp2zCcOP9hHDz7WcejdCbm4MV31uE/Tm31GEpiSPEJ2B9bhEO9t2J67XO4sWUZ\nbpiyDtHIHjSOOwYg5XqOlSyB9zc8IdX0Z2B9v0XMXcXB+c1YtvQuD2uFMtzX3Raxz5C1hv+k8Xsi\n/KfS6Fdh/D68hi4JJRSKKRUKMSanpKXjFB7dcBuPLZ18ptvhElUQuCVHVWgiXIUcK1ujrWqzl7tC\nncMnMkMIs36keMSlfnwI2eYjJzKoDsVsa/GaGHZDFhjzsj95e0C8F4uQT827zJtfuwTP3LJF/Ufp\neyjCgIA5kZmu1/xCkehv3hI3Ep7p+gqjn0IWkrMKyMkYNe6WRiXTb0B2ZsagtABVxZQR2wANMRBB\nGu7rKLuqh20MjXPoWhmZDBqe7zcdR1Q2yOVoedWnu7Dg2eW4/L7jGA/vRh3IrafiVPlRHeoBYI9V\n96cnYn9sEXoGLsWVE58GAFSy8x7i7pWGbouofbdv7+Xrz4zzEWEOQLszKcaoA5pnvT+2UDfOuap0\nuC1p63Z3VOl4J5Ll8vuOY+GlbVpzkxVr17HleTE/1lpRJXI/pn4KxtC8KaY03IBZhz/ZGka6rgJg\nMP0G0rVMa3LaO6DJIYiLBkkLKCHD7jeqARrSl91xSpHkfXQtrzNVBSRnhxF5ZRDhM1oHX+LaKtTs\nS9kHbqjU/9bH8uoy3NEzFwfnN+NyHC/o9KfXPufoeVawQbRUv2zznEVzD+BkMLWwSOJ0E86m3gez\nMfPaLVqoZ6cOc7iXNeaDiIa634FUh3psiVy3NQzxCF58Z509kWqh5c4YFt26MptYlVAl2a2OQq5G\nONO+EDcUPZs3xw0xsnRDyBimka7VpmOBc+M3IBD6/MmrM+YLyBj03HNBht1vpKSPbRTa6jr1CDEx\nKNjyY0jMqjRKwgAYRr3p0SS62yJIXlVl3PIClgHOiok7ub78wqgXigihZHgY2WYcTTxLDmM0Jo45\nhlrc5G/tRh36Y3uc2R/Udxdi3bnvTOR9FL4++cIn474GZrrDcDPu0Z3HsGrngqw0gWk3OZLsHrqY\nVdORQn1c97azToetfFJ3SKxVOSY5X1J+VEKGvRQovuxGzFIxyk6OOxqxdz2+GGnPVkDUdAxpE4YU\nZV9WLWvbRKUcX3ZZCiAf7FIB4jghW0xYoJLGFftxx+kcGBiGTN2YhWOW11VRyRKudyYCOWfgHAt3\nX0uYJXCF1Awlv98MA3C6+AhkrfpcTHwwog+vzGeJzpOVjMYl6x2sPNJPxsNFQ0YUI1jzUxSeIcNe\nGhRfdjnpaRtlVwtt/qjFw3fCqe5dRvy4vHjqq+YuQAsKM+puxs2rUSk+EckQYv1Gi79m7Aop+PIm\nM8CQ9YD3xxYqjyVyBtC3darTz0WKR9DReysO9d4qVd4wfbUqqQU7XsNG4w+cwqq5Dp67CrchLrDI\nTsMlXOPUU+Gi0Q4g5+D3sey5U7mj36jKvixG2oh5i9rylQ3KemFDvtTy+uj6mLkD1anL1OVHIVjw\n7PKCT9VLAtGLUSlcbjfLEI/ghinrdC+5tD9oc2mjvdOUYcgWOtEe5yvEpYVwhvgEadBI/ucmX2S8\n4PnOzZpgdepidqlJt8lL69K8zZtipt+R/BsQj+UJY6LTdSzryMiQx+431qqWHOPMnDyTmtcGtWoB\nKLQyLHFz17FlDl/wYpOkgDejncuodCbm+CInIB8nd/zbCW/GQAz1cCq7DLF+ZfgJgCSIBlRgABlU\nwV//Sq06mS+r5i5wL4fUyTVZSVuSs26RHKaxSlGna6FXyWjfY9PcVCnZKpdPklHXIMNeAuSqFjHK\nTtajNt2qwqyzrtRKF6Eb6QciG21PPy4Lu7ddb5LVLYRcBtSLUSmkoSmX8fIS/y5U3ZFhCE1VB/Sk\npLqSZYhH0JmYYzLuIjY+pNfVi4Rxdvi2P1SyhFJ1shAuv+84dnxkrjZg2w23BGuucI0+LtE6LF2W\nptYqaeps+xfbyHgRNxsLkGEvBYqMvpH0lAZiiC+f8LiNZNDqOog5opF9qWzz0ca44b2LShj5mK6P\ndYSnXqxRB5wMqLZWlVGxNh7VVHR58PrtRryl+mV0D85wNF7i/7NJXdV7UVgTFcMQTpz/Y7h72QwH\nem9Hz8ClxjrlY8rVKoXfXdhxU50slIPzm7HwIYdady/kuqPUZw9Yh6Ubo/ycQitSZ7UfKqVBgzpP\nS4mLHjoA8xdP1642ee5SFY2g2BhiLq2XXFiNsxge4eYhOmuyu3nNol1eXTKZa11+dogWjvtdQXXo\nLKbXPldAxYx1vxwVGECIDRmdtsV46iqu3NWV23N3I0eC1KnyxVFsDA6NgAGvivHaeUqGvVS4DLMw\nDS6Qv5BS67XxGl0uVeD2RXej2Bp1QF29ompztxr+3KPgrDgPk3Ay6m7rytV6r1EO705r+1erYWYl\nESpZAgwiaevUoWq/s3F6vwqh89ZLlU1MRSH9RpKtYRx5fpJNATKnI1OESulohNQdy4lbpcr6mBZ/\nl/XW18dMw6TdKFQI6dWvX13o2RioqmBkwSnrIGjRyp+fUecIs35bTbqbsJWqqkZr11+EF99ZB8A5\niVsd6sHMhsc8aLP7j1iTEDmTBctmNjyBj0a/iRtbluFj0W8a/+/8k1V3yPpFdOexoiqolOjJT9HH\nIYx6aqJ2jiIf5fqdL0CldCxAhr0UuJSBjde9EVmpUeiqq5JBIqZuK2PMw7gvbG/LS8jLCbd5pYCz\nHEB+ZByrZFTHd6+qyS0LLEIWshKkP4Mw3PdhLYmMRvZgeu1zesy9EYf7bjZL7+rkU7ron+yBxuX3\nHceiB1b6us+ulQ04sqsJ3UsmGJ56+GwG3UsmGM+LiUomSOXRFTLsJaJrhaU5SJfpPX9llS1uDgDJ\n2WGbly+LIAEoeNJRIR2lKty8XsAPQ8Jx8fj/dpHShSGjKyRzvcSnc8kCA5phFXXwsvfsXSrYjttd\ngHWPqrsdm646oNSZd1qfKMsU0sJCqrgYojuPYWF7W1H7sCENbxd0rqk3PW+SCBa17pul5wgTvlTF\nMMa2AbgJwGnO+Qw/9hkIrMZXfFE5txt3xpCuqzB5+UefnYzo+pgmj6rS08iBUGj0C1UVjFxqGGYJ\nQ1Exf7QJQ43jjuHE+bkO22TFwGJD780rxNOfblRKGaiwbldISaJ5MpSqMqcS+2NfxP7YIlSHepDO\nWAd5qzt3rRU/TnmMCjZolGXKSpletGNyUZD0gBtusgSAUetes3cAAMAGuVZl1hZBdF0Paval0HdD\ndWATpoXgl8f+KIAbfdrXmEMkSI1pMxYhJNMXNo8Yop9GHYAtZCF7vVpIxFuLuxmOMDuHmQ2P4drJ\nD+lxYTd/QxMDy7fKJd/uy2JeK4d4bpiyzmXL7NQjL+GnzsQc/Kzz77E/tgj96UaEdc2aKyc+rfxc\nugdnuOZECmX8gVP+ee0eOqc719Rrukm6IJ7WD1KpOUiPJhHZlzLPAyb88dg5579kjE31Y1+jGo8Z\nejG+TsYY0FthudYWmAxa9MBKX2rVrTgJeHkbfqGCIVQx6EHd0fyafCi0+1LgrSTReeaot1p19b7F\nRUVVOZPiE/B67A4A6s9FW7MdP2LvvnntHjunrSJ3QhAPgHn4BgFgGBuUGGNLASwFgAtbCjEAIxtP\nNbX6c/JYO1kPw9Z0VCCLHljpaYxdMTirOuaPbGj8bNjRSBdd9heN7HE0kkDu0kJvnbDq/U6vfc51\njiy3hHTki4rTe1nM3YtAeO0FNy5J5OycziEGRkbdzrAZds75w9Cv8VfOrArWPZNVmlSSBeheMgHI\nZIwBvYXouuTDcBl174bKS+s+l+LYoiol92u8NTtV+FLL7XzByX3h8NYJK8NNRlor2XR7jeYoadOm\n7sCB2G3IYJyxL+v71FR1IMfxvdFyZwwoomfJhFPZokVUT4RfZPIdJjMWoKoYP5DKGZu2ncOsSztt\n2i9iYLWyWmZNvW+Jn8Y3S1+P7XUsXAUbxMXjXzJVmDCkLVsJiV2hXCj+X/xtENaqD+t+q0NnHStp\n/PBOAXU1SgUbxMyGxz0nZG+Yss7zesSAayDf0EklMqhG9v3UWr2yMJzqv77o6hiB77XtVoQzZDHq\nydZKJGZpfmnT9oRZ8ZQgrRjf0MsZTZNkrJ67uN0sUVPFogdWInqgtN464NXQcIQwiMZxx4xZpVos\n/g7Ldm7nzlAdOmeqLjGHG542tnTqPi0mti6jqkYppG3fS1jGavyLD0+pm5f8uJPxLBRWBCJU07wl\nbgzWFs5RdH0MNa8NmirHCP/KHZ8EcAOASYyxkwDWcs4f8WPfowZdlEjGJGRU4hFeO3rmDltc3RsM\nKT7BVF6Xu+LFjtcyRb8Mb65jFLs/e1gGsEoByBejzsQcDGWq4D305A0/m5d+9ItrsfCW0hl2AADT\nclVGHkpKqsqPCQ2/qmJu92M/oxarNOnqOsOoA0C6FiUf4VWsDkwucsfV1YZG9g4LMSb5hFL8MLzD\ngbxOJ/EyQF0Jkw2rFGfY/QpRAZrXvvBSfxKpOSEJAU9QKMYP5KSoQhagbvdASUd4LWxvK2i0XT7k\njqs7n4Mw6PmGFPwMpYxUnC5GzpUwTPpX5cWrxgL6M3yDGD1Q8tQnulbU22Lq7ceihgZGqUZ47eiZ\n65tkgBvF3LoL79BbO7xmnKwt/2MNbwNIhHHPNnnNbNgBhn5YE6ZZOFqqX/b9fR2O76Aj1qQpJVHJ\nsPtKRYW5nFGXEOheMgHxeeNMm/o1COCnf7i86H14odBbd9k7VHWuWqtbZjY8hhtblpmqQsYi3i+k\nWuVLGtrdVDSyB+NCSThfFBje7i9e6VOF7xoyHjBmpmb02bN6mLN5UxkvNCMACsX4jLLZokQjvPwU\n+MpF/k02mieZ4WEj4SrCDnaD/bTt1WOdfMNWmkzxF10bqQSq0X2jEql/JPLyAI7sajLumJOtYQC9\n6Fo5NvVjyGMvBdaZj3J4pgj53XJil7bNOGyp/Y0Z04+clQoJZ9Rhq1xo2jNeQjh+arULWu6Mlb6u\nXUZ3moSeu+gfEY9DfWNX+ZE89lJTom7T4fTWBbK37aZ4GGZJm8qjn7XTYwHxPuU/UtAbfmu1Dzvi\nrriiAkd2NZmq0Go6Ur7lsEYrZNj9RiEEllMLYxTiHCpgeQ3KIJwRF9Lixg2qLwKVLpr3Ix2TLhOg\n1JGx9Y2MMciw+0hew3WL/NJNfDAClLjE0Q33mLu7UiGRH6q8RGPimNTk5DQHVTAE6089zatHZ5xd\n1mXSwyyqwTXT5nfjyK4mu1rqGGFsnnUpkL5wxixTvV49FPc31rfg2eW+jLorBhFzd54uZNd3odpp\n/zBPfHocblOUwqzf9jxHZUni7Jffd7y0cXZZl2l7wmTUu9siaD8WNWLs0Y3xMRtjJ8PuF1YhMJ/r\n1WXe88KQb/sqhmhkj6MXXskSjmPoCH+JRvbg4vEvQdUT0J9uGPbQWO3/lNisSHkqgaHJrsfc8x0h\nGTQoFOMn+hfOJATms1EfLqEvFar2d6dxea31O8mQDyNXTnwajYljlmSre4XMqI2z59BnN0ZQjlGj\nDpDH7i8OsxuDcDvoNGwZgOuQaGL4iEb2oLJiEF4rZkScfVThNEpve8L8WxvDRh0gj90/rEJgkiYM\n4I/nvrC9DS0lVnB0QqUVI5piZjY8nmO2JzFc5BNeEXF2vy/C0Z3HsPBjJRIFG4ZhNUGADLtfDMMX\nrpyVMM4GI4T9sUXoGbjU0F0nyke+HaulirOznzUCs0qy60CWD/sNGXYfKeUXbmF7G1rKWAnjbjAY\nTpz/MBoTxygEU2a8Dd7OMmpLUEm+1xWKsftNib5wmrdePnK3uJemTZ3Ij2hkj+OYQCpBHTuQYR8F\njKy6devM0izUWToyuKJ+p3I+q1VJs5RJ7ujOY2VReyQ0yLCPAi6/73i5lwBAM+65mmGI8qOSR26p\nfhndgzNKNjZQRbnvMscyFGMf4Sx4djkux8gw7FnsLewMQ3RbP4Kwjt+Tew3kUlXKiQQT8thHMDt6\n5o4Yb12gxdHtuiQh1k9GYoTiVKpKOZHgQoZ9BPOjX1xb7iXYcIqjDzm0rRPlx+kzK3VOZPyBU9jR\nM7ekxyDUkGEfoSxsbxtx3jrgHEen+PrIpZyf2cH5zSU/BmGHDPsIpBxDNLyiKnuksrmRDX1mYw8y\n7COMHT1zR6xRB9QVF6QNM7Ip92e26IGVw3IcmyZTADSaCoWqYkYYu7ddjyjKowfjFfVAamIkU87P\nLLrzGHYsmYuFjb8u2THyGnIzBvDFY2eM3cgYe5MxdpQxtsqPfY41Fra3YdXcBYiWSeSLIErJq1+/\nunQ7H8YhN6OFog07YywE4EEAnwDQCuB2xlhrsfsda1AzBxFkxh84VbpO1GEccjNa8MNjvxbAUc75\n7znngwCeAvBpH/Y7JhCeerklAwii1LTcGSu5cZcZq0Yd8MewtwA4IT0+qT9H5GDV3AUjOlFKEH5T\nMuMe4CE3hTBsVTGMsaWMsVcZY6/2nM0M12FHJIseWIlVcxeUexkEURZ8d2acpipJMfexhh+G/RSA\ni6XHF+nPmeCcP8w5v4Zzfk3jxLFZZUkJUoLQ8LUE0mHIzVgeaM14kVczxlglgMMAPgrNoP8OwJ9z\nzg86vebKmVX8X58fOx1p5J0ThJp/+PUz/u1MHnKjehwAZl9ycg/n/Jpc2xVdx845H2KM3QXgJ9DU\noba5GfWxwqIHVqLxzUFKihKEC6vmLkDnrZfisa9uKn5nNFXJoGiPvRCC6LHv6JmLH/3i2hGp70IQ\no4FTDzWUZgB2gBg2j30ss7C9DexnjUbMfOTpphPE6KHlzhhWYYG/4ZkxChn2PLCKc7UgBoDKFQnC\nT0ROyrcQzRiEDLuChe1tOHdMa3aQQystZMQJYtiI7jyGVTsX4M2vXQIAeOaWLWVe0ehhzMfYR7JE\nLkEQdq7c1VVSQbGRzJiPsS94drntOVVik7xwghhdHJzfjFXQwjVvfu0S8uQVjEqPnbxsgiCcCHLy\n1avHXhbDXjMtyi/b9BfKv018MEK13wRB+ML5GS04+5WE8fjj73lzVIdxRrRhr69q5nMn3zbsxyUI\ngjg/w6xReM0/7h01xn7Mx9gJgiBUWCMCcsxecOqhBnz8PW+anhstxh8gw04QBGGj5c4YDsKcB1yF\nBTZvX7D14e8Nx7I8Q4adIAjCI075v1xCf1fu6vK0f7/uCsiwEwRBlJiD871VAS6bcRd6Lq9y2cKb\n3DEZdoIgiBHC+AOnMP6A89/3e9zP2Jx4QRAEEWDIsBMEQQQMMuwEQRABgww7QRBEwCDDThAEETDI\nsBMEQQQMMuwEQRABgww7QRBEwCDDThAEETDIsBMEQQQMMuwEQRABgww7QRBEwCjKsDPGPscYO8gY\nyzDGck71IAiCIEpPsR77AQCfAfBLH9ZCEARB+EBRsr2c80MAwBjzZzUEQRBE0VCMnSAIImDk9NgZ\nYz8DMEXxp3s45z/2eiDG2FIASwGgOlTreYEEQRBEfuQ07Jzzj/lxIM75wwAeBoD6qmbuxz4JgiAI\nOxSKIQiCCBjFljsuYIydBPBBALsYYz/xZ1kEQRBEoRRbFfMMgGd8WgtBEAThAxSKIQiCCBhk2AmC\nIAIGGXaCIIiAQYadIAgiYJBhJwiCCBhk2AmCIAIGGXaCIIiAQYadIAgiYJBhJwiCCBhk2AmCIAIG\nGXaCIIiAQYadIAgiYJBhJwiCCBhk2AmCIAIGGXaCIIiAQYadIAgiYJBhJwiCCBhk2AmCIAIGGXaC\nIIiAQYadIAgiYJBhJwiCCBhk2AmCIAIGGXaCIIiAQYadIAgiYJBhJwiCCBhk2AmCIAJGUYadMXY/\nY+wNxth+xtgzjLEGvxZGEARBFEaxHvtuADM45zMBHAbwjeKXRBAEQRRDUYadc/5TzvmQ/vBlABcV\nvySCIAiiGPyMsS8B8O9Of2SMLWWMvcoYe3Uwc97HwxIEQRAylbk2YIz9DMAUxZ/u4Zz/WN/mHgBD\nAJ5w2g/n/GEADwNAfVUzL2i1BEEQRE5yGnbO+cfc/s4YWwzgJgAf5ZyTwSYIgigzOQ27G4yxGwF8\nDcBHOOdJf5ZEEARBFCRV3fIAAARQSURBVEOxMfbvAagFsJsxto8x9k8+rIkgCIIogqI8ds75ZX4t\nhCAIgvAH6jwlCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJgkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0g\nCCJgkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJgkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJg\nkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJgkGEnCIIIGGTYCYIgAgYZdoIgiIBBhp0gCCJgkGEn\nCIIIGEUZdsbYRsbYfsbYPsbYTxljUb8WRhAEQRRGsR77/ZzzmZzz2QCeB7DGhzURBEEQRVCUYeec\nx6WHEQC8uOUQBEEQxVJZ7A4YY38HYBGAXgB/WvSKCIIgiKJgnLs72YyxnwGYovjTPZzzH0vbfQNA\nNed8rcN+lgJYqj+cAeBAQSseHUwCcKbciyghdH6jGzq/0cslnPOmXBvlNOxeYYy9B8ALnPMZHrZ9\nlXN+jS8HHoHQ+Y1u6PxGN0E/Py8UWxUzTXr4aQBvFLccgiAIoliKjbH/A2PscgAZAMcB/HXxSyII\ngiCKoSjDzjm/tcCXPlzMcUcBdH6jGzq/0U3Qzy8nvsXYCYIgiJEBSQoQBEEEjLIZ9qDLETDG7meM\nvaGf4zOMsYZyr8lPGGOfY4wdZIxlGGOBqEBgjN3IGHuTMXaUMbaq3OvxG8bYNsbYacZY4EqNGWMX\nM8Z+zhjr0L+Xy8q9pnJSTo896HIEuwHM4JzPBHAYwDfKvB6/OQDgMwB+We6F+AFjLATgQQCfANAK\n4HbGWGt5V+U7jwK4sdyLKBFDAL7KOW8FcD2ArwTw8/NM2Qx70OUIOOc/5ZwP6Q9fBnBROdfjN5zz\nQ5zzN8u9Dh+5FsBRzvnvOeeDAJ6CVsIbGDjnvwRwttzrKAWc87c553v1/+8DcAhAS3lXVT6KlhQo\nhjEkR7AEwA/LvQjClRYAJ6THJwFcV6a1EEXAGJsK4CoAr5R3JeWjpIY9lxwB5/weAPfocgR3AVDK\nEYxUvMgtMMbugXab+MRwrs0PvMpJEMRIgTE2AcBOAMstUYExRUkNO+f8Yx43fQLACxhlhj3X+THG\nFgO4CcBH+SisK83j8wsCpwBcLD2+SH+OGCUwxsLQjPoTnPMflXs95aScVTGBliNgjN0I4GsAPsU5\nT5Z7PUROfgdgGmPsUsZYFYAvAPh/ZV4T4RHGGAPwCIBDnPNN5V5PuSlbgxJjbCcAkxwB5zwwHhJj\n7CiAcQDe1Z96mXMeGMkFxtgCAN8F0AQgBmAf5/zPyruq4mCMfRLAFgAhANs4539X5iX5CmPsSQA3\nQFM/7AKwlnP+SFkX5ROMsT8G8BKA16HZFAD4Juf8hfKtqnxQ5ylBEETAoM5TgiCIgEGGnSAIImCQ\nYScIgggYZNgJgiACBhl2giCIgEGGnSAIImCQYScIgggYZNgJgiACxv8H8GREYZABrlcAAAAASUVO\nRK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x7f78b9563400>"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def predict(x_data, w):\n",
      "    xMat = np.mat(x_data)\n",
      "    w = np.mat(w)\n",
      "    print (xMat.shape)\n",
      "    print (w.shape)\n",
      "    print ((xMat*w).shape)\n",
      "    return [1 if x> 0.5 else 0 for x in sigmoid(xMat*w)]\n",
      "\n",
      "predictions = predict(x_poly, w)\n",
      "\n",
      "print (classification_report(x_label, predictions))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "(400, 10)\n",
        "(10, 1)\n",
        "(400, 1)\n",
        "             precision    recall  f1-score   support\n",
        "\n",
        "          0       1.00      1.00      1.00       200\n",
        "          1       1.00      1.00      1.00       200\n",
        "\n",
        "avg / total       1.00      1.00      1.00       400\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": []
    }
   ],
   "metadata": {}
  }
 ]
}